//
// Created by Mzoro on 2022/4/3.
//

//
// 这个文件中的 alloc 方法与 aFree 方法，只能以栈的方式调用 ，不能随意使用，写差玩的
//
#include <stddef.h>

#define BUFFER_SIZE  10000
static char ALLOCA_BUFFER[BUFFER_SIZE];
static char *position = ALLOCA_BUFFER;

/**
 * 分配内存
 * @param size
 * @return
 */
char *alloc(size_t size) {

    if (position + size <= ALLOCA_BUFFER + BUFFER_SIZE) {
        position += size;
        return position - size;
    }
    // 地方不够了
    return 0;

}

/**
 * 回收内存
 * @param p
 */
void aFree(char *p) {
    // 释放的p 需要是在ALLOCA_BUFFER到 ALLOCA + BUFFER_SIZE 之间的
    if (ALLOCA_BUFFER < p && p < ALLOCA_BUFFER + BUFFER_SIZE) {
        position = p;
    }
}

#undef BUFFER_SIZE